home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / boot / netBoot.new / dev / streg.h < prev    next >
C/C++ Source or Header  |  1990-12-19  |  4KB  |  147 lines

  1.  
  2. /*    @(#)streg.h 1.1 86/09/27 SMI    */
  3.  
  4. /*
  5.  * Copyright (c) 1986 by Sun Microsystems, Inc.
  6.  */
  7.  
  8. /*
  9.  * Defines for SCSI tape.
  10.  */
  11. #define    DEV_BSIZE    512
  12. #define    SENSE_LENGTH    16
  13.  
  14. /*
  15.  * Open flag codes
  16.  */
  17. #define    CLOSED        0
  18. #define    OPENING        1
  19. #define    OPEN_FAILED    2
  20. #define    OPEN        3
  21. #define    CLOSING        4
  22.  
  23. /*
  24.  * Operation codes.
  25.  */
  26. #define    SC_REWIND        SC_REZERO_UNIT
  27. #define SC_QIC02        0x0d
  28. #define    SC_WRITE_FILE_MARK    0x10
  29. #define SC_SPACE        0x11
  30. #define SC_MODE_SELECT        0x15
  31. #define SC_ERASE_CARTRIDGE    0x19
  32. #define SC_LOAD            0x1b
  33. #define SC_SPACE_FILE        0x81    /* phony - for internal use only */
  34. #define SC_SPACE_REC        0x82    /* phony - for internal use only */
  35. #define SC_RETENSION        0x100+SC_REWIND    /* phony - for int use only */
  36. #define SC_QIC11        0x83    /* phony - for int use only */
  37. #define SC_QIC24        0x84    /* phony - for int use only */
  38.  
  39. /* 
  40.  * Misc defines specific to sysgen controllers
  41.  */
  42. #define ST_SYSGEN_QIC11        0x26
  43. #define ST_SYSGEN_QIC24        0x27
  44. #define ST_SYSGEN_SENSE_LEN    16
  45. #define ST_TYPE_SYSGEN        1
  46. #define IS_SYSGEN(dsi)    (dsi->un_ctype == ST_TYPE_SYSGEN ? 1 : 0)
  47.  
  48. /* 
  49.  * Misc defines specific to emulex controllers 
  50.  */
  51. #define ST_EMULEX_QIC11        0x84
  52. #define ST_EMULEX_QIC24        0x05
  53. #define ST_EMULEX_SENSE_LEN    11
  54. #define ST_TYPE_EMULEX        2
  55. #define IS_EMULEX(dsi)    (dsi->un_ctype == ST_TYPE_EMULEX ? 1 : 0)
  56.  
  57. /*
  58.  * Parameter list for the MODE_SELECT command.
  59.  * The parameter list contains a header, followed by zero or more
  60.  * block descriptors, followed by vendor unique parameters, if any.
  61.  */
  62. struct st_ms_hdr {
  63.     u_char    reserved1;    /* reserved */
  64.     u_char    reserved2;    /* reserved */
  65.     u_char          :1;    /* reserved */
  66.     u_char    bufm      :3;    /* buffered mode */
  67.     u_char    speed      :4;    /* speed */
  68.     u_char    bd_len;        /* length in bytes of all block descs */
  69. };
  70.  
  71. struct st_ms_bd {
  72.     u_char    density;    /* density code */
  73.     u_char    high_nb;    /* num of logical blocks on the medium that */
  74.     u_char    mid_nb;        /* are to be formatted with the density code */
  75.     u_char    low_nb;        /* and block length in block desc */
  76.     u_char    reserved;    /* reserved */
  77.     u_char    high_bl;    /* block length */
  78.     u_char    mid_bl;        /* block length */
  79.     u_char    low_bl;        /* block length */
  80. };
  81.  
  82. /*
  83.  * Mode Select Parameter List expected by emulex controllers.
  84.  */
  85. struct st_emulex_mspl {
  86.     struct st_ms_hdr hdr;    /* mode select header */
  87.     struct st_ms_bd  bd;    /* block descriptor */
  88.     u_char          :5;    /* unused */
  89.     u_char    dea      :1;    /* disable erase ahead */
  90.     u_char    aui      :1;    /* auto-load inhibit */
  91.     u_char    sec      :1;    /* soft error count */
  92. };
  93. #define EM_MS_PL_LEN    13    /* length of mode select param list */
  94. #define EM_MS_BD_LEN    8    /* length of block descriptors */
  95.  
  96. /*
  97.  * Sense info returned by sysgen controllers.
  98.  */
  99. struct    qic_sense {
  100.     /* first byte: */
  101.     u_char    other_bit :1;    /* some other bit set in this byte */
  102.     u_char    no_cart   :1;    /* no cartrige, or removed */
  103.     u_char    not_there :1;    /* drive not present */
  104.     u_char    write_prot:1;    /* write protected */
  105.     u_char    eot       :1;    /* end of last track */
  106.     u_char    data_err  :1;    /* unrecoverable data error */
  107.     u_char    no_err    :1;    /* data transmitted not in error */
  108.     u_char    file_mark :1;    /* file mark detected */
  109.     /* second byte: */
  110.     u_char    other_bit2:1;    /* some other bit set in this byte */
  111.     u_char    illegal   :1;    /* illegal command */
  112.     u_char    no_data   :1;    /* unable to find data */
  113.     u_char    retries   :1;    /* 8 or more retries needed */
  114.     u_char    bot      :1;    /* beginning of tape */
  115.     u_char          :1;    /* reserved */
  116.     u_char          :1;    /* reserved */
  117.     u_char    pwr_on    :1;    /* power on or reset since last op */
  118.     short    retry_ct;    /* retry count */
  119.     short    underruns;    /* number of underruns */
  120. };
  121.  
  122. struct st_sysgen_sense {
  123.     char    disk_sense[4];        /* sense data from disk */
  124.     struct qic_sense qic_sense;    /* sense data from QIC II */
  125.     char    disk_xfer[3];        /* no. blks in last disk oper */
  126.     char    tape_xfer[3];        /* no. blks in last tape oper */
  127. };
  128.  
  129. /*
  130.  * Sense info returned by emulex controllers.
  131.  */
  132. struct st_emulex_sense {
  133.     struct scsi_ext_sense ext_sense; /* generic extended sense format */
  134.     u_char    error;            /* error class and code, see below */
  135.     u_char    retries_msb;        /* retry count, most signif byte */
  136.     u_char    retries_lsb;        /* retry count, most signif byte */
  137. };
  138.  
  139. /* number of emulex sense bytes in addition to generic extended sense */
  140. #define EM_ES_ADD_LEN            3
  141.  
  142. /* error fields values currently used */
  143. #define EM_MEDIA_NOT_LOADED        0x09
  144. #define EM_WRITE_PROTECTED        0x17
  145. #define EM_FILE_MARK_DETECTED        0x1c
  146. #define EM_INSUFFICIENT_CAPACITY    0x0a
  147.